草庐IT

Spring JPA PostgreSQL + MongoDB

全部标签

mongodb - 如何在环回中创建引用?

我是环回的新手,我在关系方面遇到了一些问题。我有这两个模型:类(class){"name":"course","plural":"courses","base":"PersistedModel","idInjection":false,"options":{"validateUpsert":true},"properties":{"name":{"type":"string","required":true}},"validations":[],"relations":{"toughtBy":{"type":"embedsMany","model":"teacher","foreign

mongodb - 仅当当前值为 false 时才更新 bool 属性

我正在尝试更新视频进度文档。有一个isFinished字段,如果用户尚未看完视频,则该字段的值为false。一旦用户看完它,它应该更新为true。我只是根据视频的实际长度检查视频的当前时间,以确定要传递给更新方法的isFinished。问题是,如果用户已经看完一个视频,决定再看一遍,但没有看完,文档不应该将isFinished的值更新为false。只有当属性的当前值为false时,我该如何更新它?MyCollection.upsert({userId:this.userId,videoId:videoId},{$set:{userId:this.userId,videoId:video

mongodb - mongodb中两个分组值的总和?

Trans_IdAccount_IdAmountTran_Type1HA10011000C2HA100150D3HA1001100C4HA1001400D现在如何计算我帐户中的余额,如sumof(C)-sumof(D)=650? 最佳答案 十进制$cond运算符将对这种聚合操作类型派上用场。您可以使用它来计算给定Tran_Type值的总和,因此您可以将此逻辑注入(inject)$group中管道阶段,您将在其中对所有文档进行分组(即按空键分组)。您还需要通过管道传输$project运算符计算与$subtract的差异算术运算符。以下

javascript - 如何查找文档中是否存在元素 - MongoDB?

我正在尝试检查我的集合以返回文档中数组元素为特定值的所有文档。例如,这是我的一个文档JSON:[{"employer":"employer1@gmail.com","applicants":[{"email":"joe@gmail.com"},{"email":"fred@gmail.com"}]},{"employer":"employer2@gmail.com","applicants":[{"email":"steven@gmail.com"}]},{"employer":"employer3@gmail.com",}]现在,我想要返回的是申请人数组不包含电子邮件"steven@

mongodb - Mongo 分片不删除源分片中分片集合的数据

我在5台机器上安装了MongoDB3.2.6,它们都形成了由2个分片组成的分片集群(每个都是具有主要-次要-仲裁器配置的副本集)。我还有一个包含非常大集合(约5000万条记录,200GB)的数据库,它是通过mongos导入的,与其他集合一起放入主分片。我在该集合上生成了散列ID,这将是我的分片键。之后我将集合分片为:>useadmin>db.runCommand({enablesharding:"my-database"})>usemy-database>sh.shardCollection("my-database.my-collection",{"_id":"hashed"})命令

mongodb - $lookup 其中 id 字段是不同类型的

我有2个集合:交易和账户。我需要将账户加入交易,以便我可以在Accounts.acctType字段上分组。问题是Transactions.accountId是“字符串”类型,而Accounts._id是“Int32”类型。有没有办法在不更改Transactions.accountId类型的情况下解决这个问题?当前查找代码:$lookup:{from:'accounts',localField:accountId,foreignField:'_id',as:'accountData'}我需要什么:$lookup:{from:'accounts',localField:Number(acc

node.js - 在 Node 中进行集成测试后清理 mongodb

我有一个用node编写的带有mongodb后端的api。我正在使用supertest自动测试api。当然,这会导致对数据库进行大量更改,我希望获得一些关于管理它的选项的输入。目标是每个测试都不会对数据库产生永久影响。测试完成后,数据库看起来应该与测试运行前完全一样。在我的例子中,我不希望数据库在测试之间被删除或完全清空。我需要始终在数据库中维护一些真实数据。我只想还原测试本身所做的更改。对于关系数据库,我会围绕每个单元测试放置一个事务,并在测试完成(通过或失败)后将其回滚。据我所知,这不是mongo的选项。我考虑过的一些选项:假数据库我听说过像fongo这样的内存数据库(这是Java的

javascript - MongoDB:String ID 的 $lt 比较等同于 ObjectID 比较吗?

所以我将post的ObjectId存储在commentBSON中。我的BSON架构示例如下:{"_id":ObjectId("570175e6c002e46edb92aaa5"),"userid":"56f3f70d4de8c74a69d1d5e1","postid":"5700edfe03fcdb000347beaa"}现在,我想找到postid5700edfe03fcdb000347bebc下的所有帖子。所以我去:"$match":{"postid":{"$lt":"5700edfe03fcdb000347bebc"}}但是,$lt聚合运算符比较的是StringID而不是Objec

mongodb - MongoDB 上的并发读取操作

我有一个scala应用程序,它正在通过4个线程访问包含1300万条记录的Mongo集合。我希望四个线程​​同时访问Mongo,并希望确保它们永远不会读取相同的记录。此外,线程2在传递3中访问的记录将来不应被任何其他线程访问。关于如何实现它有什么建议吗? 最佳答案 它看起来是一个调度器功能的好地方。Dispatcher需要读取所有id,然后使用比方说roundRobin队列将id推送到f1,f2,f3,f4。没有阻止从单个文档读取数据的锁定机制,因此当id被分派(dispatch)时,底层函数将必须执行所有操作。

mongodb - 删除 MongoDB 中的空文档

我想删除MongoDB中的空文档。MongoDB的查询应该是什么样子的。我只想过滤掉并非每个字段都为空的文档。我只想删除那些所有字段都为Null的案例:/*1*/{"_id":ObjectId("57601e880855160fbb496f50"),"instemail":[],"instProjekt1name":[],"inststrasse":[],"institutionID":[],"insttelefax":[],"insttelefon":[],"institutionsname":[],"instplz":[],"insturl":[],"instLand":[]}/*